Increasing demand for high definition digital video products, including interactive TV in a HD format and HD video compression encoding and decoding, requires increasing sophistication, flexibility, and performance in the supporting electronics. The sophistication, flexibility, and performance requirements for HD digital video processing exceeds the capabilities of current generations of processor architectures by, in many cases, orders of magnitude.
The demands of video encoding for HD formats are both memory and data processing intensive, requiring efficient and high bandwidth memory organizations coupled with compute intensive capabilities. In addition, a video encoding product must be capable of supporting multiple standards each of which includes multiple optional features which can be supported to improve image quality and further reductions in compression bandwidth. Due to these multiple demands, a flexible parallel processing approach must be found to meet the demands in a cost effective manner.
A number of algorithmic capabilities are generally common between multiple video decoding/encoding standards, such as MPEG-2, H.264, and SMPTE-VC-1. Deblocking filtering and motion estimation/compensation are two typical examples of general algorithms that are required for video encoding.
For the above mentioned standards motion compensated prediction and block based transform coding is used to encode a video stream and reduce the bit rate needed to transmit or store the same. During the encoding process reconstructed pictures are used to predict the motion for newly arrived pictures. However, the block based encoding introduces artifacts in the reconstructed picture that decrease the overall quality of the encoding. In order to improve the prediction performance and the overall quality of the encoded video a conditional filtering is applied to all reconstructed macroblocks of a picture in the inner loop of the encoding algorithm. The conditional filtering uses a deblocking filter that adjusts its strength depending upon various compression modes chosen to process a macroblock. The following parameters are used in formulating the deblocking filter strength: a quantization parameter; motion vectors; frame or field coding decision result; and luminance pixel values. For example, when the quantization step size parameter is decreased, the amount of filtering is reduced, and when the quantization step size is very small, the filter is shut off. The filter can also be shutoff explicitly or adjusted in overall strength by an encoder at the slice level.
Although the deblocking filter per se is not complex, during the filtering process almost every pixel of a reconstructed picture frame needs to be accessed by the filtering algorithm. This deblocking operation introduces additional stress on the performance and efficiency of the encoding process.
To efficiently support deblocking filtering algorithms and other complex programmable functions, which may vary in requirements across the multiple standards, a processor by itself would require significant parallelism and very high clock rates to meet the requirements. A processor of this capability would be difficult to develop in a cost effective manner for commercial products.